#ifndef CIGEOM_POINTCLOUD_H
#define CIGEOM_POINTCLOUD_H

#include "Geometry.h"

namespace CIGeom {
    /**
     * This class represents a point cloud      
     **/
    class PointCloud : public Geometry {   

    public:             
        PointCloud (const char* n);               //Constructor
        PointCloud (const std::string& n);        //Constructor        
        virtual ~PointCloud ();                   //Destructor

    public:             
        //Utility Methods
        virtual void Render (unsigned int selectionMode);   //Virtual Method called to render the 

        virtual void LoadNames();                           //Virtual Method called to load the names that identify this geometry in the OpenGL names stack
        virtual int GetNumberOfNames();                     //Virtual Method called to get the number of names that identify this geometry 

        virtual void LoadFacesNames();                      //Virtual Method called to load the faces names in the OpenGL names stack
        virtual void LoadVerticesNames();                   //Virtual Method called to load the vertices names in the OpenGL names stack

        virtual void SaveAsCI3D (std::ofstream& out);       //Virtual Method called to save a description of this geometry within an output stream
        
    };             

}
#endif /* CIGEOM_POINTCLOUD_H */
